﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using NPOI.HSSF.UserModel;
using NPOI.HPSF;
using System.IO;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
namespace syc.Sale
{
    public partial class 月辅料供应汇总表 : System.Web.UI.Page
    {
        protected HSSFWorkbook hssfworkbook;
        protected double 套管螺纹保护器季合同量;
        protected double 油管螺纹保护器季合同量;
        protected double 油漆季合同量;
        protected double 稀释剂季合同量;
        protected double 钢带季合同量;
        protected double 打包带季合同量;
        protected double 聚乙烯季合同量;
        protected double 草支垫季合同量;
        protected double 螺纹脂季合同量;
        protected double 白墨季合同量;
        protected double 清洗剂季合同量;
        protected double 塑粉季合同量;
        protected double 脱模剂季合同量;

        protected double 套管螺纹保护器月到货量;
        protected double 油管螺纹保护器月到货量;
        protected double 油漆月到货量;
        protected double 稀释剂月到货量;
        protected double 钢带月到货量;
        protected double 打包带月到货量;
        protected double 聚乙烯月到货量;
        protected double 草支垫月到货量;
        protected double 螺纹脂月到货量;
        protected double 白墨月到货量;
        protected double 清洗剂月到货量;
        protected double 塑粉月到货量;
        protected double 脱模剂月到货量;

        protected double 套管螺纹保护器单价;
        protected double 油管螺纹保护器单价;
        protected double 油漆单价;
        protected double 稀释剂单价;
        protected double 钢带单价;
        protected double 打包带单价;
        protected double 聚乙烯单价;
        protected double 草支垫单价;
        protected double 螺纹脂单价;
        protected double 白墨单价;
        protected double 清洗剂单价;
        protected double 塑粉单价;
        protected double 脱模剂单价;

        protected double 套管螺纹保护器季到货量;
        protected double 油管螺纹保护器季到货量;
        protected double 油漆季到货量;
        protected double 稀释剂季到货量;
        protected double 钢带季到货量;
        protected double 打包带季到货量;
        protected double 聚乙烯季到货量;
        protected double 草支垫季到货量;
        protected double 螺纹脂季到货量;
        protected double 白墨季到货量;
        protected double 清洗剂季到货量;
        protected double 塑粉季到货量;
        protected double 脱模剂季到货量;

        protected double 合计金额;

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                this.Month.SelectedValue = DateTime.Today.Month.ToString();
                this.Year0.Text = DateTime.Today.Year.ToString();
            }
            Button_Query_Click(null, null);
        }

        protected void Button_Query_Click(object sender, EventArgs e)
        {
            SqlConnection Conn = new SqlConnection();
            Conn.ConnectionString = ConfigurationManager.ConnectionStrings["SCMConnectionString1"].ConnectionString;
            try
            {
                Conn.Open();
                SqlCommand Cmd = new SqlCommand();
                Cmd.Connection = Conn;
                //获得季度合同量
                string sql = @"select [dbo].[辅料季度合同量](0700000002,@年度,@月份),
                [dbo].[辅料季度合同量](0700000001,@年度,@月份),[dbo].[辅料季度合同量](0301000001,@年度,@月份)+[dbo].[辅料季度合同量](0301000002,@年度,@月份),[dbo].[辅料季度合同量](0301000003,@年度,@月份)+[dbo].[辅料季度合同量](0301000004,@年度,@月份),
                [dbo].[辅料季度合同量](0401000002,@年度,@月份),[dbo].[辅料季度合同量](0401000001,@年度,@月份),[dbo].[辅料季度合同量](0301000007,@年度,@月份),
                [dbo].[辅料季度合同量](0700000003 ,@年度,@月份),[dbo].[辅料季度合同量](0302000001,@年度,@月份),[dbo].[辅料季度合同量](0303000007,@年度,@月份),
                [dbo].[辅料季度合同量](0303000006,@年度,@月份),[dbo].[辅料季度合同量](1,@年度,@月份),[dbo].[辅料季度合同量](0303000005,@年度,@月份)";
                sql = sql.Replace("@年度", this.Year0.Text);
                sql = sql.Replace("@月份", this.Month.Text);
                Cmd.CommandText = sql;
               
                SqlDataReader Reader = Cmd.ExecuteReader();
                if (Reader.Read())
                {
                     套管螺纹保护器季合同量=Reader.GetDouble(0);
                     油管螺纹保护器季合同量 = Reader.GetDouble(1);
                     油漆季合同量 = Reader.GetDouble(2);
                     稀释剂季合同量 = Reader.GetDouble(3);
                     钢带季合同量 = Reader.GetDouble(4);
                     打包带季合同量 = Reader.GetDouble(5);
                     聚乙烯季合同量 = Reader.GetDouble(6);
                     草支垫季合同量 = Reader.GetDouble(7);
                     螺纹脂季合同量 = Reader.GetDouble(8);
                     白墨季合同量 = Reader.GetDouble(9);
                     清洗剂季合同量 = Reader.GetDouble(10);
                     塑粉季合同量 = Reader.GetDouble(11);
                     脱模剂季合同量 = Reader.GetDouble(12);

                }
                Reader.Close();
                //获得本月到货量
                string sql1 = @"select [dbo].[辅料本月到货](0700000002,@年度,@月份),
                [dbo].[辅料本月到货](0700000001,@年度,@月份),[dbo].[辅料本月到货](0301000001,@年度,@月份)+[dbo].[辅料本月到货](0301000002,@年度,@月份),[dbo].[辅料本月到货](0301000003,@年度,@月份)+[dbo].[辅料本月到货](0301000004,@年度,@月份),
                [dbo].[辅料本月到货](0401000002,@年度,@月份),[dbo].[辅料本月到货](0401000001,@年度,@月份),[dbo].[辅料本月到货](0301000007,@年度,@月份),
                [dbo].[辅料本月到货](0700000003 ,@年度,@月份),[dbo].[辅料本月到货](0302000001,@年度,@月份),[dbo].[辅料本月到货](0303000007,@年度,@月份),
                [dbo].[辅料本月到货](0303000006,@年度,@月份),[dbo].[辅料本月到货](1,@年度,@月份),[dbo].[辅料本月到货](0303000005,@年度,@月份)";
                sql1 = sql1.Replace("@年度", this.Year0.Text);
                sql1 = sql1.Replace("@月份", this.Month.Text);
                Cmd.CommandText = sql1;
               
                Reader = Cmd.ExecuteReader();
                if (Reader.Read())
                {
                    套管螺纹保护器月到货量 = Reader.GetDouble(0);
                    油管螺纹保护器月到货量 = Reader.GetDouble(1);
                    油漆月到货量 = Reader.GetDouble(2);
                    稀释剂月到货量 = Reader.GetDouble(3);
                    钢带月到货量 = Reader.GetDouble(4);
                    打包带月到货量 = Reader.GetDouble(5);
                    聚乙烯月到货量 = Reader.GetDouble(6);
                    草支垫月到货量 = Reader.GetDouble(7);
                    螺纹脂月到货量 = Reader.GetDouble(8);
                    白墨月到货量 = Reader.GetDouble(9);
                    清洗剂月到货量 = Reader.GetDouble(10);
                    塑粉月到货量 = Reader.GetDouble(11);
                    脱模剂月到货量 = Reader.GetDouble(12);
                }
                Reader.Close();
                //获得单价
                string sql2 = @"select [dbo].[辅料季度单价](0700000002,@年度,@月份),
                [dbo].[辅料季度单价](0700000001,@年度,@月份),[dbo].[辅料季度单价](0301000001,@年度,@月份)+[dbo].[辅料季度单价](0301000002,@年度,@月份),[dbo].[辅料季度单价](0301000003,@年度,@月份)+[dbo].[辅料季度单价](0301000004,@年度,@月份),
                [dbo].[辅料季度单价](0401000002,@年度,@月份),[dbo].[辅料季度单价](0401000001,@年度,@月份),[dbo].[辅料季度单价](0301000007,@年度,@月份),
                [dbo].[辅料季度单价](0700000003 ,@年度,@月份),[dbo].[辅料季度单价](0302000001,@年度,@月份),[dbo].[辅料季度单价](0303000007,@年度,@月份),
                [dbo].[辅料季度单价](0303000006,@年度,@月份),[dbo].[辅料季度单价](1,@年度,@月份),[dbo].[辅料季度单价](0303000005,@年度,@月份)";
                sql2 = sql2.Replace("@年度", this.Year0.Text);
                sql2 = sql2.Replace("@月份", this.Month.Text);
                Cmd.CommandText = sql2;
                
                Reader = Cmd.ExecuteReader();
                if (Reader.Read())
                {
                    套管螺纹保护器单价 = Reader.GetDouble(0);
                    油管螺纹保护器单价 = Reader.GetDouble(1);
                    油漆单价 = Reader.GetDouble(2);
                    稀释剂单价 = Reader.GetDouble(3);
                    钢带单价 = Reader.GetDouble(4);
                    打包带单价 = Reader.GetDouble(5);
                    聚乙烯单价 = Reader.GetDouble(6);
                    草支垫单价 = Reader.GetDouble(7);
                    螺纹脂单价 = Reader.GetDouble(8);
                    白墨单价 = Reader.GetDouble(9);
                    清洗剂单价 = Reader.GetDouble(10);
                    塑粉单价 = Reader.GetDouble(11);
                    脱模剂单价 = Reader.GetDouble(12);
                }
                Reader.Close();
                //获得累计季到货量
                string sql3 = @"select [dbo].[辅料本季到货](0700000002,@年度,@月份),
                [dbo].[辅料本季到货](0700000001,@年度,@月份),[dbo].[辅料本季到货](0301000001,@年度,@月份)+[dbo].[辅料本季到货](0301000002,@年度,@月份),[dbo].[辅料本季到货](0301000003,@年度,@月份)+[dbo].[辅料本季到货](0301000004,@年度,@月份),
                [dbo].[辅料本季到货](0401000002,@年度,@月份),[dbo].[辅料本季到货](0401000001,@年度,@月份),[dbo].[辅料本季到货](0301000007,@年度,@月份),
                [dbo].[辅料本季到货](0700000003 ,@年度,@月份),[dbo].[辅料本季到货](0302000001,@年度,@月份),[dbo].[辅料本季到货](0303000007,@年度,@月份),
                [dbo].[辅料本季到货](0303000006,@年度,@月份),[dbo].[辅料本季到货](1,@年度,@月份),[dbo].[辅料本季到货](0303000005,@年度,@月份)";
                sql3 = sql3.Replace("@年度", this.Year0.Text);
                sql3 = sql3.Replace("@月份", this.Month.Text);
                Cmd.CommandText = sql3;
               
                Reader = Cmd.ExecuteReader();
                if (Reader.Read())
                {
                    套管螺纹保护器季到货量 = Reader.GetDouble(0);
                    油管螺纹保护器季到货量 = Reader.GetDouble(1);
                    油漆季到货量 = Reader.GetDouble(2);
                    稀释剂季到货量 = Reader.GetDouble(3);
                    钢带季到货量 = Reader.GetDouble(4);
                    打包带季到货量 = Reader.GetDouble(5);
                    聚乙烯季到货量 = Reader.GetDouble(6);
                    草支垫季到货量 = Reader.GetDouble(7);
                    螺纹脂季到货量 = Reader.GetDouble(8);
                    白墨季到货量 = Reader.GetDouble(9);
                    清洗剂季到货量 = Reader.GetDouble(10);
                    塑粉季到货量 = Reader.GetDouble(11);
                    脱模剂季到货量 = Reader.GetDouble(12);
                }
                Reader.Close();

                Reader.Dispose();
                Cmd.Dispose();
                合计金额 = (套管螺纹保护器月到货量 * 套管螺纹保护器单价) + (油管螺纹保护器月到货量 * 油管螺纹保护器单价) +
                    (油漆月到货量 * 油漆单价) + (稀释剂月到货量 * 稀释剂单价) + (钢带月到货量 * 钢带单价) + (打包带月到货量 * 打包带单价) +
                    (聚乙烯月到货量 * 聚乙烯单价) + (草支垫月到货量 * 草支垫单价) + (螺纹脂月到货量 * 螺纹脂单价) + (白墨月到货量 * 白墨单价) +
                    (清洗剂月到货量 * 清洗剂单价) + (塑粉月到货量 * 塑粉单价) + (脱模剂月到货量 * 脱模剂单价);
            }
            catch (Exception ex)
            {
                Conn.Close();
                throw ex;
            }
            finally
            {
                Conn.Close();
                Conn.Dispose();
            }
        }

        protected void WriteToFile()
        {
            DateTime d;

            d = DateTime.Today;

            Response.ContentType = "application/ms-excel";
            Response.AddHeader("content-disposition", "attachment; filename=\"" + d.ToShortDateString() + ".xls\"");
            hssfworkbook.Write(Response.OutputStream);
        }

        protected void InitializeWorkbook()
        {

            FileStream file = new FileStream(HttpContext.Current.Server.MapPath("/Sale/模板/月大宗辅料汇总表.xls"), FileMode.Open, FileAccess.Read);

            hssfworkbook = new HSSFWorkbook(file);

            DocumentSummaryInformation dsi = PropertySetFactory.CreateDocumentSummaryInformation();
            dsi.Company = "陕西延长石油材料有限公司";
            hssfworkbook.DocumentSummaryInformation = dsi;

            SummaryInformation si = PropertySetFactory.CreateSummaryInformation();
            si.Subject = "报表";
            si.Title = "陕西延长石油材料公司大宗辅料汇总表";
            hssfworkbook.SummaryInformation = si;
        }
        protected void Button_Save_Click(object sender, EventArgs e)
        {
            InitializeWorkbook();
            HSSFSheet sheet1 = hssfworkbook.GetSheet("辅料月汇总表");
            Button_Query_Click(null, null);
            sheet1.GetRow(0).GetCell(0).SetCellValue(this.Year0.SelectedItem.Text + "年" + this.Month.SelectedItem.Text + "月份大宗辅料供应汇总表");
            sheet1.GetRow(2).GetCell(2).SetCellValue(套管螺纹保护器季合同量);
            sheet1.GetRow(2).GetCell(4).SetCellValue(套管螺纹保护器月到货量);
            sheet1.GetRow(2).GetCell(5).SetCellValue(套管螺纹保护器单价);
            sheet1.GetRow(2).GetCell(6).SetCellValue(套管螺纹保护器月到货量*套管螺纹保护器单价);
            sheet1.GetRow(2).GetCell(7).SetCellValue(套管螺纹保护器季到货量);

            sheet1.GetRow(3).GetCell(2).SetCellValue(油管螺纹保护器季合同量);
            sheet1.GetRow(3).GetCell(4).SetCellValue(油管螺纹保护器月到货量);
            sheet1.GetRow(3).GetCell(5).SetCellValue(油管螺纹保护器单价);
            sheet1.GetRow(3).GetCell(6).SetCellValue(油管螺纹保护器月到货量 * 油管螺纹保护器单价);
            sheet1.GetRow(3).GetCell(7).SetCellValue(油管螺纹保护器季到货量);

            sheet1.GetRow(4).GetCell(2).SetCellValue(油漆季合同量);
            sheet1.GetRow(4).GetCell(4).SetCellValue(油漆月到货量);
            sheet1.GetRow(4).GetCell(5).SetCellValue(油漆单价);
            sheet1.GetRow(4).GetCell(6).SetCellValue(油漆月到货量 * 油漆单价);
            sheet1.GetRow(4).GetCell(7).SetCellValue(油漆季到货量);

            sheet1.GetRow(5).GetCell(2).SetCellValue(稀释剂季合同量);
            sheet1.GetRow(5).GetCell(4).SetCellValue(稀释剂月到货量);
            sheet1.GetRow(5).GetCell(5).SetCellValue(稀释剂单价);
            sheet1.GetRow(5).GetCell(6).SetCellValue(稀释剂月到货量 * 稀释剂单价);
            sheet1.GetRow(5).GetCell(7).SetCellValue(稀释剂季到货量);

            sheet1.GetRow(6).GetCell(2).SetCellValue(钢带季合同量);
            sheet1.GetRow(6).GetCell(4).SetCellValue(钢带月到货量);
            sheet1.GetRow(6).GetCell(5).SetCellValue(钢带单价);
            sheet1.GetRow(6).GetCell(6).SetCellValue(钢带月到货量 * 钢带单价);
            sheet1.GetRow(6).GetCell(7).SetCellValue(钢带季到货量);

            sheet1.GetRow(7).GetCell(2).SetCellValue(打包带季合同量);
            sheet1.GetRow(7).GetCell(4).SetCellValue(打包带月到货量);
            sheet1.GetRow(7).GetCell(5).SetCellValue(打包带单价);
            sheet1.GetRow(7).GetCell(6).SetCellValue(打包带月到货量 * 打包带单价);
            sheet1.GetRow(7).GetCell(7).SetCellValue(打包带季到货量);

            sheet1.GetRow(8).GetCell(2).SetCellValue(聚乙烯季合同量);
            sheet1.GetRow(8).GetCell(4).SetCellValue(聚乙烯月到货量);
            sheet1.GetRow(8).GetCell(5).SetCellValue(聚乙烯单价);
            sheet1.GetRow(8).GetCell(6).SetCellValue(聚乙烯月到货量 * 聚乙烯单价);
            sheet1.GetRow(8).GetCell(7).SetCellValue(聚乙烯季到货量);

            sheet1.GetRow(9).GetCell(2).SetCellValue(草支垫季合同量);
            sheet1.GetRow(9).GetCell(4).SetCellValue(草支垫月到货量);
            sheet1.GetRow(9).GetCell(5).SetCellValue(草支垫单价);
            sheet1.GetRow(9).GetCell(6).SetCellValue(草支垫月到货量 * 草支垫单价);
            sheet1.GetRow(9).GetCell(7).SetCellValue(草支垫季到货量);

            sheet1.GetRow(10).GetCell(2).SetCellValue(螺纹脂季合同量);
            sheet1.GetRow(10).GetCell(4).SetCellValue(螺纹脂月到货量);
            sheet1.GetRow(10).GetCell(5).SetCellValue(螺纹脂单价);
            sheet1.GetRow(10).GetCell(6).SetCellValue(螺纹脂月到货量 * 螺纹脂单价);
            sheet1.GetRow(10).GetCell(7).SetCellValue(螺纹脂季到货量);

            sheet1.GetRow(11).GetCell(2).SetCellValue(白墨季合同量);
            sheet1.GetRow(11).GetCell(4).SetCellValue(白墨月到货量);
            sheet1.GetRow(11).GetCell(5).SetCellValue(白墨单价);
            sheet1.GetRow(11).GetCell(6).SetCellValue(白墨月到货量 * 白墨单价);
            sheet1.GetRow(11).GetCell(7).SetCellValue(白墨季到货量);

            sheet1.GetRow(12).GetCell(2).SetCellValue(清洗剂季合同量);
            sheet1.GetRow(12).GetCell(4).SetCellValue(清洗剂月到货量);
            sheet1.GetRow(12).GetCell(5).SetCellValue(清洗剂单价);
            sheet1.GetRow(12).GetCell(6).SetCellValue(清洗剂月到货量 * 清洗剂单价);
            sheet1.GetRow(12).GetCell(7).SetCellValue(清洗剂季到货量);

            sheet1.GetRow(13).GetCell(2).SetCellValue(塑粉季合同量);
            sheet1.GetRow(13).GetCell(4).SetCellValue(塑粉月到货量);
            sheet1.GetRow(13).GetCell(5).SetCellValue(塑粉单价);
            sheet1.GetRow(13).GetCell(6).SetCellValue(塑粉月到货量 * 塑粉单价);
            sheet1.GetRow(13).GetCell(7).SetCellValue(塑粉季到货量);

            sheet1.GetRow(14).GetCell(2).SetCellValue(脱模剂季合同量);
            sheet1.GetRow(14).GetCell(4).SetCellValue(脱模剂月到货量);
            sheet1.GetRow(14).GetCell(5).SetCellValue(脱模剂单价);
            sheet1.GetRow(14).GetCell(6).SetCellValue(脱模剂月到货量 * 脱模剂单价);
            sheet1.GetRow(14).GetCell(7).SetCellValue(脱模剂季到货量);

            sheet1.GetRow(15).GetCell(6).SetCellValue(合计金额);
            WriteToFile();
            Response.End();
        }
    }
}
